﻿using 示例中体现的ModelBus核心思想.Models.Data;
using 示例中体现的ModelBus核心思想.Models.Domain;

namespace 示例中体现的ModelBus核心思想.ModelBus.Converters
{
    /// <summary>
    /// 数据模型 → 领域模型 转换器
    /// 负责从存储模型恢复业务模型（忽略存储细节）
    /// </summary>
    public class DataToDomainConverter : IModelConverter<ProductData, Product>
    {
        public Product Convert(ProductData source)
        {
            if (source == null) return null;

            return new Product
            {
                Id = source.Id,
                Name = source.Name,
                Price = source.Price,
                // 存储的整数转换为领域枚举
                Status = (ProductStatus)source.StatusCode
            };
            // 忽略Sku、CreatedAt等存储层属性（领域模型不关心）
        }

        public IEnumerable<Product> Convert(IEnumerable<ProductData> sources)
        {
            return sources?.Select(Convert) ?? Enumerable.Empty<Product>();
        }
    }
}
